﻿namespace LeetCodeProject._0001_1000._001_100._91_100._091;

public class Solution
{
    public int NumDecodings(string s)
    {
        if (s[0] == '0')
            return 0;

        int pre = 1, cur = 1;

        //下标从1开始，0的情况已经考虑了
        for (int i = 1; i < s.Length; ++i)
        {
            //因为cur会发生变化，所以用一个变量提前保存
            int temp = cur;
            if (s[i] == '0')
            {
                if (s[i - 1] != '1' && s[i - 1] != '2')
                    return 0; //因为数字只有10和20符合要求，如果0的前面数字不是1或者不是2，则不符合
                else
                    cur = pre;
            }
            else if (s[i - 1] == '1' || (s[i - 1] == '2' && int.Parse("" + s[i]) > 0 && int.Parse("" + s[i]) < 7))
            {
                cur = cur + pre;
            }

            pre = temp;
        }

        return cur;
    }
}